read.csv("wind_processed.csv")

Tmax = 2000
t = 20
n_frames = Tmax/t #must pick something divisible

#make each transition point appear double 

#repeat every t^th twice so e.g. if t=20, get 1:20, 20:40 etc.
ind = sapply(1:n_frames, function(i){(t*(i-1)):(t*(i-1)+t)})
ind = ind[2:length(ind)] #remove extra 0
dfpad = df[ind,]

dfpad$frame =  c(rep(1,t),rep(2:n_frames, each = t+1))


plotly::plot_ly(data = dfpad,
                 x = ~eastwest, #~ so looks for them in dataset
                 y = ~northsouth,
                 frame = ~frame,
                 type = "scatter",
                 text = ~paste("Time:", Time),
                 mode = "lines+markers",
                 marker = list(size = 8,
                               symbol = "circle",
                               sizemode = "diameter"),
                 line = list(shape = "linear", width = 2)
                ) %>%
plotly::layout(xaxis = list(title = "East-West Direction"),
                 yaxis = list(title = "North-South Direction"),
                showlegend = F
        ) %>%
plotly::animation_opts(frame = 250,
                       transition = 10,
                       redraw = F) 
NA
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCg0KYGBge3J9DQpyZWFkLmNzdigid2luZF9wcm9jZXNzZWQuY3N2IikNCg0KVG1heCA9IDIwMDANCnQgPSAyMA0Kbl9mcmFtZXMgPSBUbWF4L3QgI211c3QgcGljayBzb21ldGhpbmcgZGl2aXNpYmxlDQoNCiNtYWtlIGVhY2ggdHJhbnNpdGlvbiBwb2ludCBhcHBlYXIgZG91YmxlIA0KDQojcmVwZWF0IGV2ZXJ5IHRedGggdHdpY2Ugc28gZS5nLiBpZiB0PTIwLCBnZXQgMToyMCwgMjA6NDAgZXRjLg0KaW5kID0gc2FwcGx5KDE6bl9mcmFtZXMsIGZ1bmN0aW9uKGkpeyh0KihpLTEpKToodCooaS0xKSt0KX0pDQppbmQgPSBpbmRbMjpsZW5ndGgoaW5kKV0gI3JlbW92ZSBleHRyYSAwDQpkZnBhZCA9IGRmW2luZCxdDQoNCmRmcGFkJGZyYW1lID0gIGMocmVwKDEsdCkscmVwKDI6bl9mcmFtZXMsIGVhY2ggPSB0KzEpKQ0KDQoNCnBsb3RseTo6cGxvdF9seShkYXRhID0gZGZwYWQsDQogICAgICAgICAgICAgICAgIHggPSB+ZWFzdHdlc3QsICN+IHNvIGxvb2tzIGZvciB0aGVtIGluIGRhdGFzZXQNCiAgICAgICAgICAgICAgICAgeSA9IH5ub3J0aHNvdXRoLA0KICAgICAgICAgICAgICAgICBmcmFtZSA9IH5mcmFtZSwNCiAgICAgICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyIiwNCiAgICAgICAgICAgICAgICAgdGV4dCA9IH5wYXN0ZSgiVGltZToiLCBUaW1lKSwNCiAgICAgICAgICAgICAgICAgbW9kZSA9ICJsaW5lcyttYXJrZXJzIiwNCiAgICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSAiY2lyY2xlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplbW9kZSA9ICJkaWFtZXRlciIpLA0KICAgICAgICAgICAgICAgICBsaW5lID0gbGlzdChzaGFwZSA9ICJsaW5lYXIiLCB3aWR0aCA9IDIpDQogICAgICAgICAgICAgICAgKSAlPiUNCnBsb3RseTo6bGF5b3V0KHhheGlzID0gbGlzdCh0aXRsZSA9ICJFYXN0LVdlc3QgRGlyZWN0aW9uIiksDQogICAgICAgICAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJOb3J0aC1Tb3V0aCBEaXJlY3Rpb24iKSwNCiAgICAgICAgICAgICAgICBzaG93bGVnZW5kID0gRg0KICAgICAgICApICU+JQ0KcGxvdGx5OjphbmltYXRpb25fb3B0cyhmcmFtZSA9IDMwMCwNCiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbiA9IDEwLA0KICAgICAgICAgICAgICAgICAgICAgICByZWRyYXcgPSBGKSANCg0KI1RPRE86IHdvdWxkIGJlIGNvb2wgdG8gc29tZWhvdyByZXByZXNlbnQgdGhlIHVuY2VydGFpbnR5DQojIENhbiBnZXQgY3JlZGlibGUgaW50ZXJ2YWwgZnJvbSBwb3N0ZXJpb3Igb3V0cHV0LCB0b28uLi4NCg0KYGBgDQoNCg==